package com.zq.pijiu;

/**
    目标：啤酒问题。

    啤酒2元一瓶，4个盖子可以换一瓶，2个空瓶可以换一瓶，问10元可以喝几瓶
    剩余多少盖子和瓶子。

    分析：
        （1）定义一个方法来买酒。
        （2）定义3个静态变量，存储酒的总数，每次剩余的盖子和空瓶数作为下一轮继续用。

 */
public class BeerDemo {
    public static int count; // 可以买的总数
    public static int lastGaiZiNums;  // 当前剩余的盖子数
    public static int lastPingZiNums; // 当前剩余的空瓶数
    public static void main(String[] args) {
         buy(10);
    }

    /**
     * 买酒的方法
     * @param money
     */
    public static void buy(int money){
        // 1.先买完再说
        int nums = money / 2 ;
        // 累加买的酒数量
        count+=nums;

        // 2.算出当前总的空瓶数量和盖子数量。
        int currentGaiZiNums = lastGaiZiNums + nums;
        int currentPingZiNums = lastPingZiNums + nums;

        // 3.换算成钱继续买
        int totalMoney = 0 ;
        if(currentGaiZiNums >= 4){
            totalMoney += (currentGaiZiNums / 4) * 2;
        }
        lastGaiZiNums = currentGaiZiNums % 4 ; // 作为下一轮的盖子继续使用！！

        if(currentPingZiNums >= 2){
            totalMoney += (currentPingZiNums / 2) * 2;
        }
        lastPingZiNums = currentPingZiNums % 2 ; // 作为下一轮的瓶子继续使用！！

        if(totalMoney >= 2){
            buy(totalMoney);
        }else{
            System.out.println("盖子数："+lastGaiZiNums);
            System.out.println("瓶子数："+lastPingZiNums);
            System.out.println("酒总数："+count);
        }
    }
}